import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner in = new Scanner(System.in);
        DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/database1?characterEncoding=utf8&useSSL=false");
        // 设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 设置密码
        ((MysqlDataSource) dataSource).setPassword("root");
        // 让代码和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        // 可以让用户输入控制台输入语句,进行插入
        System.out.println("请输入学号");
        int id = in.nextInt();
        System.out.println("请输入姓名");
        String name = in.next();

        // 操作数据,构造一个 sql语句
        // 在 JDBC 中构造sql语句不带;
        String sql = "insert into student values(?,?)";// 用 ? 占位,要传入的值还不确定
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);// 下标从 1 开始,将第一个?替换成 id 对应的值
        statement.setString(2,name);
        System.out.println(statement);

        // 执行 sql
        // 如果是 增 删 改 ,用 statement.executeUpdate()
        // 如果是 查 操作 , 用 statement.executeQuery();
        int ret = statement.executeUpdate();// 受影响的行数
        System.out.println("有"+ret+"行受影响");

        // sql 执行完毕,释放资源
        statement.close();// 先
        connection.close();// 后

    }

}
